home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
windows
/
win31
/
macsyma.arj
/
MACSDEMO.EXE
/
TRAN_MAT.OUT
< prev
next >
Wrap
Text File
|
1993-09-14
|
10KB
|
106 lines
(c1) /* TRANSFER_MATRIX solves control equations of the form
dY
-- = A . Y + B . U
dT
Z = C . Y + D . U
where A, B, C, and D are matrices and U, Y, and Z are vectors. The
inputs to the function are A, B, C, D, and the independent variable to use.
For example: */
(a:matrix([-2,1,0],[1,-3,1],[0,1,-2]),
b:matrix([1,0],[0,1],[0,0]),
c:matrix([1,0,0],[0,1,-1]),
d:matrix([2,0],[0,1]),
display(a,b,c,d))$
|$label(0,15,Times New Roman,)a$hinge()$in( = )$matrix(3,3,$in( - )2,1,0,1,$in( - )3,1,0,1,$in( - )2)
|$label(0,15,Times New Roman,)b$hinge()$in( = )$matrix(2,3,1,0,0,1,0,0)
|$label(0,15,Times New Roman,)c$hinge()$in( = )$matrix(3,2,1,0,0,0,1,$in( - )1)
|$label(0,15,Times New Roman,)d$hinge()$in( = )$matrix(2,2,2,0,0,1)
(c2) transfer_matrix(a,b,c,d,'s);
C:\MACSD2B\ode\tran_mat.fas being loaded.
|$label(0,15,Times New Roman,$(d2$))$matrix(2,2,$q($sup(s,2)$in( + )5$in( )s$in( + )5,$sup(s,3)$in( + )7$in( )$sup(s,2)$in( + )14$in( )s$in( + )8)$in( + )2,$q(s$in( + )2,$sup(s,3)$in( + )7$in( )$sup(s,2)$in( + )14$in( )s$in( + )8),$q(s$in( + )1,$sup(s,3)$in( + )7$in( )$sup(s,2)$in( + )14$in( )s$in( + )8),$q($sup(s,2)$in( + )3$in( )s$in( + )2,$sup(s,3)$in( + )7$in( )$sup(s,2)$in( + )14$in( )s$in( + )8)$in( + )1)
(c3) /* The original matrices with respect to phase-variable coordinates
and the TPVF matrix which defines the transformation are stored in the
list phase_variable_matrices. */
phase_variable_matrices;
|$label(0,15,Times New Roman,$(d3$))$open([)$matrix(3,3,0,1,0,0,0,1,$in( - )8,$in( - )14,$in( - )7)$ina($, )$hinge()$matrix(2,3,0,0,0,1,1,$in( - )5)$ina($, )$hinge()$matrix(3,2,5,5,1,1,1,0)$ina($, )$hinge()$matrix(2,2,2,0,0,1)$ina($, )$hinge()$matrix(3,3,5,5,1,2,1,0,1,0,0)$close(])
(c4) /* Another example. Note that zero matrices must be entered explicitly.
Note also that TRANSFER_MATRIX always returns a matrix as its answer. */
(a:matrix([0,1,0],[0,0,1],[2,-1,2]),
b:matrix([0],[0],[1]),
c:matrix([1,0,0]),
d:matrix([0]),
display(a,b,c,d))$
|$label(0,15,Times New Roman,)a$hinge()$in( = )$matrix(3,3,0,1,0,0,0,1,2,$in( - )1,2)
|$label(0,15,Times New Roman,)b$hinge()$in( = )$matrix(1,3,0,0,1)
|$label(0,15,Times New Roman,)c$hinge()$in( = )$matrix(3,1,1,0,0)
|$label(0,15,Times New Roman,)d$hinge()$in( = )$matrix(1,1,0)
(c5) transfer_matrix(a,b,c,d,'s);
|$label(0,15,Times New Roman,$(d5$))$matrix(1,1,$q(1,$sup(s,3)$in( - )2$in( )$sup(s,2)$in( + )s$in( - )2))
(c6) phase_variable_matrices;
|$label(0,15,Times New Roman,$(d6$))$open([)$matrix(3,3,0,1,0,0,0,1,2,$in( - )1,2)$ina($, )$hinge()$matrix(1,3,0,0,1)$ina($, )$hinge()$matrix(3,1,1,0,0)$ina($, )$hinge()$matrix(1,1,0)$ina($, )$hinge()$matrix(3,3,1,0,0,0,1,0,0,0,1)$close(])
(c7) /* A similar example, which contains a symbolic parameter: */
(a:matrix([0,z,0],[0,0,1],[2,-1,2]),
b:matrix([0],[0],[1]),
c:matrix([1,0,0]),
d:matrix([0]),
display(a,b,c,d))$
|$label(0,15,Times New Roman,)a$hinge()$in( = )$matrix(3,3,0,z,0,0,0,1,2,$in( - )1,2)
|$label(0,15,Times New Roman,)b$hinge()$in( = )$matrix(1,3,0,0,1)
|$label(0,15,Times New Roman,)c$hinge()$in( = )$matrix(3,1,1,0,0)
|$label(0,15,Times New Roman,)d$hinge()$in( = )$matrix(1,1,0)
(c8) soln: transfer_matrix(a,b,c,d,'s);
|$label(0,15,Times New Roman,$(d8$))$matrix(1,1,$q(z,$in( - )2$in( )z$in( + )$sup(s,3)$in( - )2$in( )$sup(s,2)$in( + )s))
(c9) phase_variable_matrices;
|$label(0,15,Times New Roman,$(d9$))$open([)$matrix(3,3,0,1,0,0,0,1,2$in( )z,$in( - )1,2)$ina($, )$hinge()$matrix(1,3,0,0,1)$ina($, )$hinge()$matrix(3,1,z,0,0)$ina($, )$hinge()$matrix(1,1,0)$ina($, )$hinge()$matrix(3,3,z,0,0,0,1,0,0,0,1)$close(])
(c10) /* Now invert the Laplace transform. */
soln: part(soln,1,1);
|$label(0,15,Times New Roman,$(d10$))$q(z,$in( - )2$in( )z$in( + )$sup(s,3)$in( - )2$in( )$sup(s,2)$in( + )s)
(c11) solve(denom(soln),s)$
(c12) num(soln)/product((s-rhs(part(%,i))),i,1,3)$
(c13) ilt(%,s,t);
|$label(0,15,Times New Roman,$(d13$))$q(162$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( )$sup($e(),$in( - )$q(t$in( )$paren($paren(9$in( )$sqrt(3)$in( )$italictext(i)$in( + )9,$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )12$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3)$in( - )$sqrt(3)$in( )$italictext(i)$in( + )1,$(,$)),18$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3))),$paren(243$in( )$sqrt(3)$in( )$italictext(i)$in( - )243,$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( + )54$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )3$in( )$sqrt(3)$in( )$italictext(i)$in( - )3)$hinge()$in( + )$q(162$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( )$sup($e(),$in( - )$q(t$in( )$paren($paren(9$in( - )9$in( )$sqrt(3)$in( )$italictext(i),$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )12$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3)$in( + )$sqrt(3)$in( )$italictext(i)$in( + )1,$(,$)),18$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3))),$paren($in( - )243$in( )$sqrt(3)$in( )$italictext(i)$in( - )243,$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( + )54$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( + )3$in( )$sqrt(3)$in( )$italictext(i)$in( - )3)$hinge()$in( - )$q(324$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( )$sup($e(),$in( - )$q(t$in( )$paren($in( - )9$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )6$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3)$in( - )1,$(,$)),9$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),1$in(/)3))),$in( - )972$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( - )108$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )12)
(c14) optimize(isolate(%,t));
C:\MACSD2B\library1\optim.fas being loaded.
|$label(0,15,Times New Roman,$(e14$))$in( - )$q(324$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3),$in( - )972$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( - )108$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )12)
|$label(0,15,Times New Roman,$(e15$))$q(162$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3),$paren($in( - )243$in( )$sqrt(3)$in( )$italictext(i)$in( - )243,$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( + )54$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( + )3$in( )$sqrt(3)$in( )$italictext(i)$in( - )3)
|$label(0,15,Times New Roman,$(e16$))$q(162$in( )z$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3),$paren(243$in( )$sqrt(3)$in( )$italictext(i)$in( - )243,$(,$))$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),4$in(/)3)$in( + )54$in( )$sup($paren($q($sqrt(z$in( )$paren(27$in( )z$in( - )2,$(,$))),3$in( )$sqrt(3))$in( + )$q(27$in( )z$in( - )1,27),$(,$)),2$in(/)3)$in( - )3$in( )$sqrt(3)$in( )$italictext(i)$in( - )3)
|$label(0,15,Times New Roman,$(d16$))block$paren($paren(%1$ina($, )$hinge()%2$ina($, )$hinge()%3$ina($, )$hinge()%4$ina($, )$hinge()%5$ina($, )$hinge()%6$ina($, )$hinge()%7,[,])$ina($, )$hinge()%1$in( : )27$in( )z$ina($, )$hinge()%2$in( : )$sqrt(3)$ina($, )$hinge()%3$in( : )$q($sqrt(z$in( )$paren(%1$in( - )2,$(,$))),3$in( )%2)$in( + )$q(%1$in( - )1,27)$ina($, )$hinge()%4$in( : )$sup(%3,1$in(/)3)$ina($, )$hinge()%5$in( : )$q(1,%4)$ina($, )$hinge()%6$in( : )$sup(%3,2$in(/)3)$ina($, )$hinge()%7$in( : )$in( - )12$in( )%4$ina($, )$hinge()$q(e16,$sup($e(),$q(t$in( )%5$in( )$paren($paren(9$in( )%2$in( )$italictext(i)$in( + )9,$(,$))$in( )%6$in( + )%7$in( - )%2$in( )$italictext(i)$in( + )1,$(,$)),18)))$in( + )$q(e15,$sup($e(),$q(t$in( )%5$in( )$paren($paren(9$in( - )9$in( )%2$in( )$italictext(i),$(,$))$in( )%6$in( + )%7$in( + )%2$in( )$italictext(i)$in( + )1,$(,$)),18)))$in( + )$q(e14,$sup($e(),$q(t$in( )%5$in( )$paren($in( - )9$in( )%6$in( - )6$in( )%4$in( - )1,$(,$)),9))))
(c17) /* Clean Up */
remvalue(a,b,c,d,soln)$